package com.hnchances.studentscoresystem.dto.response;

import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 成绩查询响应DTO
 * 对应接口：/grades/query（有鉴权）
 * 功能：返回单条成绩的完整信息（关联学生、班级、课程、考试）
 */
@Data
public class GradesQueryResponse {

    /**
     * 成绩ID（唯一标识）
     * 约束：非空（匹配数据库grades表id字段）
     */
    private Long id;

    /**
     * 学生ID（关联student表id）
     * 约束：非空（匹配数据库grades表studentID字段）
     */
    private Long studentID;

    /**
     * 学生姓名
     * 约束：非空（关联student表name字段，多表查询结果）
     */
    private String studentName;

    /**
     * 班级ID（关联class表id）
     * 约束：非空（匹配数据库grades表classID字段）
     */
    private Integer classID;

    /**
     * 班级名称
     * 约束：非空（关联class表className字段，多表查询结果）
     */
    private String className;

    /**
     * 课程ID（关联course表id）
     * 约束：非空（匹配数据库grades表courseID字段）
     */
    private Integer courseID;

    /**
     * 课程名称
     * 约束：非空（关联course表courseName字段，多表查询结果）
     */
    private String courseName;

    /**
     * 考试ID（关联exam表id）
     * 约束：非空（匹配数据库grades表examID字段）
     */
    private Integer examID;

    /**
     * 考试名称
     * 约束：非空（关联exam表examName字段，多表查询结果）
     */
    private String examName;

    /**
     * 成绩分数
     * 约束：非空（匹配数据库grades表grades字段，支持小数如88.5）
     */
    private BigDecimal grades;

    /**
     * 成绩录入时间
     * 约束：非空（匹配数据库grades表create_time字段，自定义字段记录添加时间）
     */
    private Date createTime;
}